package com.kamistoat.meimeimall.meimeimallpayment.dao;

import com.kamistoat.meimeimall.common.annotation.AutoFillCreateTime;
import com.kamistoat.meimeimall.meimeimallpayment.entity.ReconciliationTaskEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ReconciliationTaskDao {
    /**
     * insert
     */
    @AutoFillCreateTime
    Long insert(ReconciliationTaskEntity reconciliationTaskEntity);

    /**
     * 分页查询全部。
     * create_time近的在最前面
     */
    List<ReconciliationTaskEntity> selectAllInPage(@Param("limit") Integer limit, @Param("offset") Integer offset);

    /**
     * 条件分页查询
     *
     * @param wrapper wrapper
     */
    List<ReconciliationTaskEntity> selectByWrapper(@Param("wrapper") ReconciliationTaskEntity wrapper,
                                                   @Param("limit") Integer limit,
                                                   @Param("offset") Integer offset);

    /**
     * 乐观修改任务状态。
     *
     * @param taskId 任务Id
     * @param fromStatus 原始状态
     * @param toStatus 新状态
     * @return 操作成功的行数
     */
    Long changeTaskStatus(@Param("taskId") Long taskId, @Param("fromStatus") Integer fromStatus, @Param("toStatus") Integer toStatus);

    /**
     * 根据Id做唯一查询
     */
    ReconciliationTaskEntity selectById(@Param("taskId") Long taskId);

    /**
     * 更新是否有错误
     */
    Long updateErrorStatus(@Param("taskId") Long taskId, @Param("errorStatus") Integer integer);
}
